package com.smalluz.ad.modules.common.api;

import java.util.Map;

import com.smalluz.ad.modules.common.config.MediaConfigStorage;
import com.smalluz.ad.modules.common.enums.MediaApiUrl;
import com.smalluz.ad.modules.common.exception.ApiException;
import com.smalluz.ad.modules.common.tools.OkHttpUtils;

public interface MediaService {

    /**
     * 
     * @description 获取token数据
     * @return
     */
    String getAccessToken();

    /**
     * 
     * @description 获取远程token
     * @param forceRefresh
     *            是否强制刷新
     * @return
     */
    String getAccessToken(Boolean forceRefresh);

    /**
     * 
     * @description 刷新token
     * @return
     */
    String refreshAccessToken();
 
    /**
     * 
     * @description 发送post请求
     * @param url
     * @param object
     * @return
     * @throws BgyfwException
     */
    String post(MediaApiUrl url, Object object) throws ApiException;

    /**
     * 
     * @description 发送get请求
     * @param url
     * @return
     * @throws BgyfwException
     */
    String get(MediaApiUrl url, Object object) throws ApiException;
    
    /**
     * 
     * @description 获取Http请求类
     * @return
     */
    OkHttpUtils getOkHttpUtils();
    
    /**
     * 
     * @description 获取配置信息
     * @return
     */
    MediaConfigStorage getMediaConfigStorage();

    void setConfigStorage(MediaConfigStorage configProvider);

    void setMultiConfigStorages(Map<String, MediaConfigStorage> configStorages);

    void addConfigStorage(String advertiserId, MediaConfigStorage configStorages);

    void setMultiConfigStorages(Map<String, MediaConfigStorage> configStorages, String defaultMpId);
    
}
